// pages/simple_calculator/simple_calculator.js

const math = require("../../utils/math");
/** 最大输入长度 */
const MAX_INPUT_LEN = 50;

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		input_txt: '',
		result_txt: '',
	},

	/** 计算表达式formula的值 */
	calc: function (formula) {
		// TODO 
		// DEBUG 自定义计算表达式用来调试
		// formula = "tan(1)";
		try {
			let res = parseFloat(math.evaluate(formula));
			return res;
		} catch (error) { // 如果计算出错就返回"ERROR!"
			console.log(error); // DEBUG
			return "ERROR!";
		}
		return math.evaluate(formula);
		// return formula;
	},

	/** 往input区域添加字符 */
	appendInput: function (s) {
		let input = this.data.input_txt + String(s);
		if (input.length <= MAX_INPUT_LEN) {
			this.setData({
				input_txt: input
			});
		} else {
			// handle it
		}
	},

	/** 按下数字按钮 */
	btnNum: function (e) {
		let num = e.target.dataset.val;
		this.appendInput(num);
	},

	/** 按下操作符按钮 */
	btnOp: function (e) {
		let op = e.target.dataset.val;
		this.appendInput(op);
	},

	/** 清除输入框 */
	btnClear: function (e) {
		this.setData({
			input_txt: '',
			result_txt: ''
		});
	},

	/** 退格 */
	btnDel: function (e) {
		let input = this.data.input_txt;
		let len = input.length;
		if (len > 0) {
			input = input.substr(0, len - 1);
		}
		this.setData({
			input_txt: input,
		});
	},

	/** 等于按钮，计算表达式的值 */
	btnEqual: function (e) {
		this.setData({
			result_txt: this.calc(this.data.input_txt)
		});
	},

	/**  */
	btnDot: function (e) {
		let dot = e.target.dataset.val;
		this.appendInput(dot);
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {

	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})